#!/bin/bash

# 分析：
# 环境：
# jumper-server	有yunwei用户
# app1-appn  局域网内所有可以ping通的机器
# 
# 
# 1. 在跳板上创建yunwei用户，并且生成一对秘钥
# 2. 检测当前局域网中哪些ip是能ping通哪些是不能ping通		循环语句并发的去检查
# 3. 在脚本中所有的交互动作需要用到expect实现
# 
# yunwei用户sudo授权：
# visudo
# ## Allow root to run any commands anywhere
# root    ALL=(ALL)       ALL
# yunwei  ALL=(root)      NOPASSWD:ALL,!/sbin/shutdown,!/sbin/init,!/bin/rm -rf /


#检查局域网中哪些ip是可以ping通，并保存到一个文件
ip1=10.1.1
for ((i=1;i<=10;i++))
do
	{
      ping -c1 $ip1.$i &>/dev/null
      [ $? -eq 0 ] && echo "$ip1.$i" >> ip_up.txt
	}&
done
wait

#yunwei用户生成一对秘钥（有交互）
[ ! -f ~/.ssh/id_rsa ] && ssh-keygen -P '' -f ~/.ssh/id_rsa

#将yunwe用户的公钥远程拷贝到指定的服务器 100	循环
##判断expect程序是否安装
{
rpm -q expect
[ $? -ne 0 ] && sudo yum -y install expect
while read ip2
do
	/usr/bin/expect<<-EOF
	spawn ssh-copy-id  root@$ip2
	expect {
      "yes/no" {send "yes\r";exp_continue}
      "password:" {send "123\r"}
      }
	expect eof
	EOF
done<ip_up.txt
} &>/dev/null

#测试验证
remote_ip=`tail -1 ip_up.txt`
ssh root@$remote_ip hostname
[ $? -eq 0 ] && echo "公钥推送完毕...."